home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgramD2.iso / Borland / Borland C++ V5.02 / IMGLIST.PAK / CELAPP.CPP next >
C/C++ Source or Header  |  1997-05-06  |  4KB  |  170 lines

  1. // ---------------------------------------------------------------------------
  2. // ObjectWindows
  3. // Copyright (C) 1995, 1995 by Borland International, All Rights Reserved
  4. // ---------------------------------------------------------------------------
  5. #include <owl/pch.h>
  6. #include <owl/chooseco.h>
  7. #include <owl/imagelst.h>
  8. #include <stdio.h>
  9. #include "celapp.rh"
  10.  
  11. //
  12. // class TClientWindow
  13. // ~~~~~ ~~~~~~~~~~~~~
  14. class TClientWindow : public TWindow {
  15.   public:
  16.     TClientWindow(TWindow* parent= 0);
  17.    ~TClientWindow();
  18.  
  19.   protected:
  20.     void            SetupWindow();
  21.     void            Paint(TDC& dc, bool erase, TRect& rect);
  22.  
  23.     void            SetBkColor();
  24.  
  25.     TImageList*     ImageList;
  26.     TSize           ImgSize;
  27.  
  28.   DECLARE_RESPONSE_TABLE(TClientWindow);
  29. };
  30.  
  31.  
  32. //
  33. //
  34. //
  35. DEFINE_RESPONSE_TABLE1(TClientWindow, TWindow)
  36.   EV_COMMAND(CM_COLOR, SetBkColor),
  37. END_RESPONSE_TABLE;
  38.  
  39.  
  40. //
  41. //
  42. //
  43. TClientWindow::TClientWindow(TWindow* parent) : TWindow(parent)
  44. {
  45.   Attr.Style |= (WS_CLIPSIBLINGS|WS_CLIPCHILDREN);
  46.   ImageList = 0;
  47. }
  48.  
  49.  
  50. //
  51. //
  52. //
  53. TClientWindow::~TClientWindow()
  54. {
  55.   delete ImageList;
  56. }
  57.  
  58.  
  59. //
  60. //
  61. //
  62. void
  63. TClientWindow::SetupWindow()
  64. {
  65.   TWindow::SetupWindow();
  66.  
  67.   for (int i = IDB_WKING; i <= IDB_BPAWN; i++) {
  68.     TBitmap img(*GetModule(), i);
  69.     TBitmap msk(*GetModule(), i+MASK_DELTA);
  70.  
  71.     if (!ImageList) {
  72.       ImgSize = TSize(img.Width(), img.Height());
  73.       ImageList = new TImageList(ImgSize, true, 10, 10);
  74.       ImageList->SetBkColor(RGB(0xff, 0, 0));
  75.     }
  76.  
  77.     ImageList->Add(img, msk);
  78.   }
  79. }
  80.  
  81.  
  82. //
  83. //
  84. //
  85. void
  86. TClientWindow::Paint(TDC& dc, bool, TRect&)
  87. {
  88.   int x = ImgSize.cx;
  89.   int y = ImgSize.cy;
  90.  
  91.   for (int i = 0; i < ImageList->GetImageCount(); i++) {
  92.     ImageList->Draw(i, dc, (x += ImgSize.cx), y, ILD_NORMAL);
  93.     ImageList->Draw(i, dc, (x += ImgSize.cx), y, ILD_TRANSPARENT);
  94.     ImageList->Draw(i, dc, (x += ImgSize.cx), y, ILD_MASK);
  95.     ImageList->Draw(i, dc, (x += ImgSize.cx), y, ILD_BLEND50);
  96.     ImageList->Draw(i, dc, (x += ImgSize.cx), y, ILD_BLEND25);
  97.  
  98.     x += ImgSize.cx;
  99.     ImageList->Draw(i, dc, (x += ImgSize.cx), y, ImgSize.cx, ImgSize.cy,
  100.                    TColor::LtBlue, TColor::LtYellow, ILD_NORMAL);
  101.     ImageList->Draw(i, dc, (x += ImgSize.cx), y, ImgSize.cx, ImgSize.cy,
  102.                    TColor::LtBlue, TColor::LtYellow, ILD_TRANSPARENT);
  103.     ImageList->Draw(i, dc, (x += ImgSize.cx), y, ImgSize.cx, ImgSize.cy,
  104.                    TColor::LtBlue, TColor::LtYellow, ILD_MASK);
  105.     ImageList->Draw(i, dc, (x += ImgSize.cx), y, ImgSize.cx, ImgSize.cy,
  106.                    TColor::LtBlue, TColor::LtYellow, ILD_BLEND);
  107.     ImageList->Draw(i, dc, (x += ImgSize.cx), y, ImgSize.cx, ImgSize.cy,
  108.                    TColor::LtBlue, TColor::LtYellow, ILD_BLEND50);
  109.     ImageList->Draw(i, dc, (x += ImgSize.cx), y, ImgSize.cx, ImgSize.cy,
  110.                    TColor::LtBlue, TColor::LtYellow, ILD_BLEND25);
  111.  
  112.     ImageList->Draw(i, dc, (x += ImgSize.cx), y, ImgSize.cx, ImgSize.cy,
  113.                    TColor::LtBlue, TColor::LtYellow, ILD_MASK|ILD_BLEND);
  114.     ImageList->Draw(i, dc, (x += ImgSize.cx), y, ImgSize.cx, ImgSize.cy,
  115.                    TColor::LtBlue, TColor::LtYellow, ILD_IMAGE|ILD_BLEND);
  116.     ImageList->Draw(i, dc, (x += ImgSize.cx), y, ImgSize.cx, ImgSize.cy,
  117.                    TColor::LtBlue, TColor::LtYellow, ILD_MASK|ILD_TRANSPARENT|ILD_BLEND);
  118.     x =  ImgSize.cx;
  119.     y += ImgSize.cy;
  120.   }
  121. }
  122.  
  123.  
  124. //
  125. //
  126. //
  127. void
  128. TClientWindow::SetBkColor()
  129. {
  130.   TChooseColorDialog::TData colors;
  131.   colors.Flags = CC_RGBINIT;
  132.   colors.Color = ImageList->GetBkColor();
  133.   colors.CustColors = 0;
  134.  
  135. #if 0
  136.   if (TChooseColorDialog(this, colors).Execute() == IDOK)
  137.     ImageList->SetBkColor(colors.Color);
  138. #endif
  139. }
  140.  
  141.  
  142. //
  143. // class TSampleApp
  144. // ~~~~~ ~~~~~~~~~~
  145. class TSampleApp : public TApplication {
  146.   public:
  147.     TSampleApp() : TApplication() {}
  148.     void InitMainWindow();
  149. };
  150.  
  151.  
  152. //
  153. //
  154. //
  155. void
  156. TSampleApp::InitMainWindow()
  157. {
  158.   SetMainWindow(new TFrameWindow(0, "ImageList example", new TClientWindow()));
  159. }
  160.  
  161.  
  162. //
  163. //
  164. //
  165. int
  166. OwlMain(int /*argc*/, char */*argv*/[])
  167. {
  168.   return TSampleApp().Run();
  169. }
  170.